<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ClaraGenomicsAnalysis: Clara Genomics Analysis</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ClaraGenomicsAnalysis
   &#160;<span id="projectnumber">0.2.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Clara Genomics Analysis </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2>Overview</h2>
<p>Clara Genomics Analysis is a GPU-accelerated library for biological sequence analysis. This section provides a brief overview of the different components of ClaraGenomicsAnalysis. For more detailed API documentation please refer to the <a href="#enable-doc-generation">documentation</a>.</p>
<h3>cudapoa</h3>
<p>The <code>cudapoa</code> package provides a GPU-accelerated implementation of the <a href="https://simpsonlab.github.io/2015/05/01/understanding-poa/">Partial Order Alignment</a> algorithm. It is heavily influenced by <a href="https://github.com/rvaser/spoa">SPOA</a> and in many cases can be considered a GPU-accelerated replacement. Features include:</p>
<ol type="1">
<li>Generation of consensus sequences</li>
<li>Generation of multi-sequence alignments (MSAs)</li>
</ol>
<h3>cudaaligner</h3>
<p>The <code>cudaaligner</code> package provides GPU-accelerated global alignment.</p>
<p>## Clone Clara Genomics Analysis </p><div class="fragment"><div class="line">git clone --recursive git@github.com:clara-genomics/ClaraGenomicsAnalysis.git</div></div><!-- fragment --><h2>System Requirements</h2>
<p>Minimum requirements -</p>
<ol type="1">
<li>Ubuntu 16.04 or Ubuntu 18.04</li>
<li>CUDA 9.0+</li>
<li>gcc/g++ 5.4.0+</li>
<li>Python 3.6.7+</li>
</ol>
<h2>Clara Genomics Analysis Setup</h2>
<h3>Build</h3>
<p>To build Clara Genomics Analysis -</p>
<div class="fragment"><div class="line">mkdir build</div><div class="line">cd build</div><div class="line">cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install</div><div class="line">make -j install</div></div><!-- fragment --><h3>Install</h3>
<p>To install the SDK -</p>
<div class="fragment"><div class="line">make install</div></div><!-- fragment --><h3>Package generation</h3>
<p>Package generation puts the libraries, headers and binaries built by the <code>make</code> command above into a <code>.deb</code>/<code>.rpm</code> for portability and easy installation. The package generation itself doesn't guarantee any cross-platform compatibility.</p>
<p>It is recommended that a separate build and packaging be performed for each distribution and CUDA version that needs to be supported.</p>
<p>The type of package (deb vs rpm) is determined automatically based on the platform the code is being run on. To generate a package for the SDK -</p>
<div class="fragment"><div class="line">make package</div></div><!-- fragment --><h2>Enable Unit Tests</h2>
<p>To enable unit tests, add <code>-Dcga_enable_tests=ON</code> to the <code>cmake</code> command in the build step.</p>
<p>This builds GTest based unit tests for all applicable modules, and installs them under <code>${CMAKE_INSTALL_PREFIX}/tests</code>. These tests are standalone binaries and can be executed directly. e.g.</p>
<div class="fragment"><div class="line">cd $INSTALL_DIR</div><div class="line">./tests/cudapoatests</div></div><!-- fragment --><h2>Enable Benchmarks</h2>
<p>To enable benchmarks, add <code>-Dcga_enable_benchmarks=ON</code> to the <code>cmake</code> command in the build step.</p>
<p>This builds Google Benchmark based microbenchmarks for applicable modules. The built benchmarks are installed under <code>${CMAKE_INSTALL_PREFIX}/benchmarks/&lt;module&gt;</code> and can be run directly.</p>
<p>e.g. </p><div class="fragment"><div class="line">#INSTALL_DIR/benchmarks/cudapoa/multibatch</div></div><!-- fragment --><p>A description of each of the benchmarks is present in a README under the module's benchmark folder.</p>
<h2>Enable Doc Generation</h2>
<p>To enable document generation for Clara Genomics Analysis, please install <code>Doxygen</code> on your system. Once <code>Doxygen</code> has been installed, run the following to build documents.</p>
<div class="fragment"><div class="line">make docs</div></div><!-- fragment --><p>Docs are also generated as part of the default <code>all</code> target when <code>Doxygen</code> is available on the system.</p>
<h2>Code Formatting</h2>
<h3>C++ / CUDA</h3>
<p>Clara Genomics Analysis makes use of <code>clang-format</code> to format it's source and header files. To make use of auto-formatting, <code>clang-format</code> would have to be installed from the LLVM package (for latest builds, best to refer to <a href="http://releases.llvm.org/download.html">http://releases.llvm.org/download.html</a>).</p>
<p>Once <code>clang-format</code> has been installed, make sure the binary is in your path.</p>
<p>To add a folder to the auto-formatting list, use the macro <code>cga_enable_auto_formatting(FOLDER)</code>. This will add all cpp source/header files to the formatting list.</p>
<p>To auto-format, run the following in your build directory.</p>
<div class="fragment"><div class="line">make format</div></div><!-- fragment --><p>To check if files are correct formatted, run the following in your build directory.</p>
<div class="fragment"><div class="line">make check-format</div></div><!-- fragment --><h3>Python</h3>
<p>Clara Genomics Analysis follows the PEP-8 style guidelines for all its Python code. The automated CI system for Clara Genomics Analysis run <code>flake8</code> to check the style.</p>
<p>To run style check manually, simply run the following from the top level folder. </p><div class="fragment"><div class="line">flake8 pyclaragenomics/</div></div><!-- fragment --> </div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
